A network switch of a data communications network provides a “switching” function for transferring information, such as data frames, among entities of the network. Typically, the switch is a computer that includes a collection of components (e.g., cards) interconnected by a backplane of wires. Each card may include a limited number of ports that couple the switch to the other network entities over various types of media, such as Ethernet, FDDI, or token ring connections. A network entity may consist of any device that “sources” (i.e., transmits) or “sinks” (i.e., receives) data frames over such media.
The switching function provided by the switch typically involves receiving data at a source port from a network entity, transferring the data over the backplane to a destination port and, thereafter, transmitting that data over a medium to another entity of the network. In many cases, the destination of a data frame may be more than one, but less than all of the ports of the switch. This type of multicast data transfer is typically employed to segregate communication between groups of entities on a network. However, multicast transfers generally degrade the performance of a switch because of the additional bandwidth consumed by the multiple output copies and because of the software involvement typically needed to effect forwarding decisions for the frame based on port membership in a group. Performance degradation may be further exasperated in a situation where it is desired to connect a single network entity to two different ports (i.e., “dual-homed” connection) with the purpose of increasing available bandwidth.
When the forwarding part of a switch engine receives a frame, it must determine to which of several output ports to send the frame. When link aggregation is employed, the forwarder should attempt to distribute the load evenly over each set of aggregated output links (the set composing a single “logical” port). For each aggregate group selected for forwarding, a frame should be output to one and only one link. In a port mask-based switch, this is done by combining two port masks: a Forwarding Mask, which indicates which aggregate group(s) to output the frame to, and an Aggregation Mask, which indicates which port in each aggregate to use.
In one current method of distributing data frames in a port mask-based switching engine, an aggregation code (such as a numerical value) is derived based on the data frame that is to be forwarded. The aggregation code is then used as an index to an aggregation table. The aggregation table provides a port to which the frame is to be sent on each aggregated link for each aggregation code.
The aggregation code can be derived from information in the frame according to one of many possible schemes or algorithms, some of which are known as “Legacy” methods. Legacy methods typically use Source Media Access Control (Source MAC or SMAC) based aggregation schemes. For example, the aggregation code can be derived from the lower two bits of the Source MAC address or from a selected number of bits from the Source MAC address and a selected number of bits from the Destination MAC (DMAC) address after a Boolean operation such as exclusive OR (XOR) is performed on the selected SMAC and DMAC bits.
More advanced or modern methods of deriving an aggregation code often use more complex schemes based on other fields extracted from the frame such as the source IP (SIP) address. For example, an XOR operation can be performed on selected bits (such as the lower two bits) of the SIP address and selected bits (such as the lower two bits) of the Source MAC address to derive the aggregation code that is then used as an index to the aggregation table to “look up” the proper port for a particular aggregated group.
In modern networks, a switch may need to communicate with other switches and other network entities that may not be as advanced in that they may not support the more advanced methods of deriving an aggregation code. For instance, as network components are upgraded or as more devices are added to a network, some of the devices may only support Legacy methods. The more modern aggregation methods are incompatible with the Legacy methods.
In networks that have both Legacy switches and more advanced switches, it may be possible to use Legacy methods for link aggregation on all switches. The probability of even distribution of network traffic on the switches, however, is decreased.
In such networks, if both modern and Legacy aggregation methods worked in parallel, all frames could be forwarded to all destination devices, and depending on the destination, a proper aggregation method could be chosen.